package com.xinxin.leetcode.problem203;

import com.xinxin.leetcode.common.ListNode;
import com.xinxin.leetcode.common.ListUtil;

/**
 * @author ：史鑫鑫
 * @date ：Created in 2019/4/25 3:31
 */

/**
 * 删除链表中等于给定值 val 的所有节点。
 * <p>
 * 示例:
 * <p>
 * 输入: 1->2->6->3->4->5->6, val = 6
 * 输出: 1->2->3->4->5
 */
public class Solution {
    public ListNode removeElements(ListNode head, int val) {
//        ListNode dummyHead = new ListNode(-1);
//        dummyHead.next = head;
//        ListNode prev = dummyHead;
//        while (prev.next != null)
//            if (prev.next.val == val) prev.next = prev.next.next;
//            else prev = prev.next;
//        return head;
        // 递归的方法
        if (head == null) return null;
        head.next = removeElements(head.next, val);
        return head.val == val ? head.next : head;
    }

    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 2, 3, 5};
        ListNode list = ListUtil.createList(arr);
        ListUtil.printList(list);
        new Solution().removeElements(list, 2);
        ListUtil.printList(list);
    }
}
